/*
 *  ClientDispatch.h
 *  ClientDispatch
 *
 *  Created by Andrey on 09/10/2008.
 *  Copyright 2008 ИУ7-2003. All rights reserved.
 *
 */

/** \file ClientDispatch.h
	\brief Файл, содержащий описания структур данных и функций, составляющих 
	интерфейс к библиотеке ClientDispatch
 
	Библиотека ClientDispatch представляет собой более или менее универсальную
	библиотеку сетевого взаимодействия, предназаначенную для использования в
	случае возможного подключения нескольких клиентов. Библиотека берёт на себя
	организацию многопоточной обработки запросов, приходящих от клиентов, после
	чего прикладной программе, использующей ClientDispatch, необходимо только 
	указать callback-функцию, которая будет вызываться при получении данных от 
	клиента. В этой callback-функции и предполагается размещение реализации
	протокола (в данном случае -- SMTP).
 */

#include <KBaseTypes.h>

/** \def CLIENT_DATA_BUFFER_SIZE
	Константа, определяющая максимальный размер данных, полученных от
	клиента и хранящихся на сервере. Для протокола SMTP -- не менее 64 Кбайт.
 */
#define CLIENT_DATA_BUFFER_SIZE 2048
/** \def CLIENT_RECEPTION_BUFFER 
	Константа, определяющая максимальный размер данных, единовременно 
	принимаемых от клиента.
 */
#define CLIENT_RECEPTION_BUFFER 1024
/** \def LOG_FILENAME
	Константа, задающая путь к файлу журнала, создаваемому библиотекой
	ClientDispatch.
 */
#define LOG_FILENAME "~/MSTU/ClientDispatch.log"

/**	\fn void CDInit();
	\brief Функция инициализации библиотеки ClientDispatch
	\param Нет
	\return Ничего
 */
void CDInit();
/**	\fn void CDRun();
	\brief Функция, запускающая обработку клиентских запросов
	\param int port -- порт, на котором будет запущен сервер
	\return Ничего
 */
void CDRun(int port);

void CDCloseConnection(AsciiStringPtr clientAddress);

/**	\fn void CDShutdown();
	\brief Функция, завершающая работу библиотеки ClientDispatch
	\param Нет
	\return Ничего
 */
void CDShutdown();